/**
 * Up to 10 upstream systems will populate random events for max 5 downstream clients; one event can only be consumed once by any client. <br/>
<br/>
 Design a prototype with proper interface and data structure to demonstrate the above use case, by leveraging the JDK concurrent framework<br/>
 <br/>
 The following requirements should be met:<br/>
 1.	The events are kept in memory and do not need be persisted<br/>
 2.	Event should at minimal contain the following details:<br/>
 Long id,<br/>
 Long timestamp.<br/>
 3.	Print out useful event information from both upstream and downstream.<br/>
 */
package practise.mulitThreads.EventSystem;